package ckngaa.beacon.scan;

import java.util.List;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

public class BeaconActivity extends Activity
{
	TextView mainText;
	WifiManager mainWifi;
	WifiReceiver receiverWifi;
	List<ScanResult> wifiList;
	String sb = new String();

	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		mainText = (TextView) findViewById(R.id.mainText);
		mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
		receiverWifi = new WifiReceiver();
		registerReceiver(receiverWifi, new IntentFilter(
				WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
		mainWifi.startScan();
		mainText.setText("Starting Scan...\n");
	}

	public boolean onCreateOptionsMenu(Menu menu)
	{
		menu.add(0, 0, 0, "Refresh");
		return super.onCreateOptionsMenu(menu);
	}

	public boolean onMenuItemSelected(int featureId, MenuItem item)
	{
		mainWifi.startScan();
		mainText.setText("Starting Scan");
		return super.onMenuItemSelected(featureId, item);
	}

	protected void onPause()
	{
		unregisterReceiver(receiverWifi);
		super.onPause();
	}

	protected void onResume()
	{
		registerReceiver(receiverWifi, new IntentFilter(
				WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
		super.onResume();
	}

	class WifiReceiver extends BroadcastReceiver
	{
		public void onReceive(Context c, Intent intent)
		{
			sb = new String();
			wifiList = mainWifi.getScanResults();
			for (int i = 1; i <= wifiList.size(); i++)
			{
				sb += (i + ". ");
				sb += ("SSID: " + wifiList.get(i-1).SSID+"\n");
				sb += ("BSSID: " + wifiList.get(i-1).BSSID+"\n");
				sb += ("Level: " + wifiList.get(i-1).level+"\n");
				sb += ("Frequency: " + wifiList.get(i-1).frequency+"\n");
				sb += ("Capabilities: " + wifiList.get(i-1).capabilities+"\n\n");
			}
			mainText.setText(sb);
		}
	}
}